package com.javafactroy.kunlong.codefactroy.service.tool;


import com.javafactroy.kunlong.base.metadata.model.TMetadataModel;
import com.javafactroy.kunlong.codefactroy.service.base.FileTemplateFactroy;
import com.javafactroy.kunlong.codefactroy.service.domain.MetadataPropService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Slf4j
@Service
public abstract class DbCodetool {

    Boolean rmFile = true;

    @Autowired
    MetadataPropService metadataPropService;

    @Autowired
    TMetadataModel metadataModel;

    @Autowired
    FileTemplateFactroy fileTemplateFactroy;
//    MysqlDatasourceConfig mysqlDatasourceConfig;
//
//    @Autowired
//    MysqlTablesMapper mysqlTablesMapper;
//
//    void make(DatasourceConfig datasourceConfig) {
//        if (datasourceConfig.getDbName().equals("mysql")) {
//            makeMysql();
//        }
//    }
//
//    public void makeMysql() {
//        //information_schema.TABLES
//
//        loadMysqlTables().forEach(i -> makeMysqlOne(i.getTableName()));
//    }
//
//    /*
//     * @author leijhmdas
//     * @param table or view
//     *
//     * */
//    public void makeMysqlOne(String table) {
//        List<MysqlTables> list = loadMysqlTables(table);
//        log.info("table={}",list.get(0));
//
//        MetadataTable metadata = metadataModel.loadDbMysqlMetadata(table);
//        metadata.setTableComment(list.get(0).getTableComment());
//        makeFile(metadata);
//    }
//
//    public void makeMysql(String table) {
//
//        if (!existTable(table)) {
//            throw new RuntimeException(StrUtil.format("表{}不存在！", table));
//        }
//        makeMysqlOne(table);
//    }
//
//
//    void makeFile(MetadataTable metadata) {
//        EntityProps entityProps = metadata.toEntityProps();
//        entityProps.makeParams();
//        log.info("template params={}", CommonUtils.toJSONString(entityProps.getStringTemplate().getParams()));
//
//        if (rmFile) {
//            fileTemplateFactroy.rmDbFile(metadata);
//            rmFile = false;
//        }
//        fileTemplateFactroy.getList().forEach(i -> {
//
//            String stext = i.valueOf(entityProps).parse(i.readFile());
//            i.writeFile(stext);
//        });
//
//    }
//
//
//    List<MysqlTables> loadMysqlTables() {
//        String dbName = mysqlDatasourceConfig.getDbName();
//        List<MysqlTables> tables = mysqlTablesMapper.select(new MysqlTables().setDbName(dbName));
//        log.info("tables = {}", CommonUtils.toJSONString(tables));
//        return tables;
//    }
//
//    public boolean existTable(String tableName) {
//        return loadMysqlTables(tableName).size() > 0;
//    }
//
//    List<MysqlTables> loadMysqlTables(String tableName) {
//        String dbName = mysqlDatasourceConfig.getDbName();
//        List<MysqlTables> tables = mysqlTablesMapper.select(new MysqlTables().setDbName(dbName).setTableName(tableName));
//        log.info("tables = {}", CommonUtils.toJSONString(tables));
//        return tables;
//    }
}
